from app.models import db
# from sqlalchemy import Column,String,INT,DATETIME
from datetime import datetime

'''
    unique是字段是否唯一(可重复)
    primary key自然就是主键
    db.String对应varchar
    db.INT对应int
    ullable=False 代表这一列不可以为空
    index=True 表示在该列创建索引。
    commont  列表注释
    
    只需要对这个User类操作就行了，因为sqlalchemy会自动映射到对应库--对应表进行操作。
'''


class User(db.Model):
    id = db.Column(db.INT, primary_key=True)
    username = db.Column(db.String(16), unique=True, index=True)
    name = db.Column(db.String(32), index=True)
    password = db.Column(db.String(32), unique=False)
    email = db.Column(db.String(64), unique=True, nullable=False)
    role = db.Column(db.INT, default=0, comment="0: 普通用户 1: 组长 2: 超级管理员")
    created_at = db.Column(db.DATETIME, nullable=False)
    updated_at = db.Column(db.DATETIME, nullable=False)
    deleted_at = db.Column(db.DATETIME)
    last_login_at = db.Column(db.DATETIME)


    def __init__(self, username, name, password, email):
        self.username = username
        self.password = password
        self.email = email
        self.name = name
        self.created_at = datetime.now()
        self.updated_at = datetime.now()
        self.role = 0

    # sqlalchemy把返回的数据映射成一个对象,让它变的可读，只需在定义表的类下面加上这样的代码
    def __repr__(self):
        return '<User %r>' % self.username
